const models = require('../models')
const { setObject, getObject } = require('./redis-client')

/**
 * 查询用户组的权限
 */
const getPermissions = async (roleId) => {
  // 查询缓存中是否存在
  let permissions = await getObject(`roles:${roleId}:permissions`)

  // 存在就直接返回
  if (permissions) {
    return permissions
  }

  // 用户组
  const role = await models.Role.findByPk(roleId)

  // 用户组的权限列表
  permissions = await role.getPermissions()

  // 权限列表过滤掉空接口地址后，重组为数组
  permissions = permissions
    .filter(item => item.method && item.api)
    .map(item => `${item.method} ${item.api}`)

  // 写入缓存
  await setObject(`roles:${roleId}:permissions`, permissions)
  return permissions
}

module.exports = getPermissions
